package cn.com.aiouyi.shiro;

import org.apache.shiro.authc.UsernamePasswordToken;

/**
 * 登录令牌
 * @author hanson
 */
public class AuthenticationToken extends UsernamePasswordToken {

	private static final long serialVersionUID = 5898441540965086534L;

	/** 认证方式 */
	public enum Way{
		/** 一般方式，即账号密码登录 */
		general,
		/** token方式控制登录  */
		token
	}
	
	/** 验证码ID */
	private String captchaId;

	/** 验证码 */
	private String captcha;

	/** 用户类型 */
	private Principal.Type type;

	/**
	 * 认证方式
	 */
	private Way way = Way.general;
	
	/**
	 * 构造方法
	 * @param username 用户名
	 * @param password 密码
	 * @param captchaId 验证码ID
	 * @param captcha 验证码
	 * @param rememberMe 记住我
	 * @param host IP
	 */
	public AuthenticationToken(String username, String password, Principal.Type type, String captchaId, String captcha, boolean rememberMe, String host) {
		super(username, password, rememberMe, host);
		this.captchaId = captchaId;
		this.captcha = captcha;
		this.type = type;
	}

	/**
	 * 获取验证码ID
	 * @return 验证码ID
	 */
	public String getCaptchaId() {
		return captchaId;
	}

	/**
	 * 设置验证码ID
	 * @param captchaId 验证码ID
	 */
	public void setCaptchaId(String captchaId) {
		this.captchaId = captchaId;
	}

	/**
	 * 获取验证码
	 * @return 验证码
	 */
	public String getCaptcha() {
		return captcha;
	}

	/**
	 * 设置验证码
	 * @param captcha 验证码
	 */
	public void setCaptcha(String captcha) {
		this.captcha = captcha;
	}

	/**
	 * 获取用户类型
	 * @return
	 */
	public Principal.Type getType() {
		return type;
	}

	/**
	 * 设置用户类型
	 * @param type
	 */
	public void setType(Principal.Type type) {
		this.type = type;
	}
	
	/**
	 * 获取认证方式
	 * @return
	 */
	public Way getWay() {
		return way;
	}

	/**
	 * 设置认证方式
	 * @param way
	 */
	public void setWay(Way way) {
		this.way = way;
	}
}